namespace Todo;

public class TodoServiceImpl : ITodo
{
    private readonly ApplicationDBContext _applicationDbContext;
    public TodoServiceImpl(ApplicationDBContext applicationDbContext)
    {
        _applicationDbContext = applicationDbContext;
    }

    public List<Todo> GetTodoListByUid(Guid uid)
    {
       return _applicationDbContext.Todos.Where(todo => todo.UserId == uid).ToList();
    }

    public bool UpdateTodo(Todo todo)
    {
        _applicationDbContext.Todos.Update(todo);
        return _applicationDbContext.SaveChanges() > 0;
    }

    public bool UpdateTodoStatus(Guid id)
    {
        var todo = _applicationDbContext.Todos.FirstOrDefault(t => t.Id == id);
        if (todo!= null)
        {
            todo.IsCompleted =!todo.IsCompleted;
            _applicationDbContext.Todos.Update(todo);
            return _applicationDbContext.SaveChanges() > 0;
        }
        return false;
    }

    public bool DeleteTodo(Guid id)
    {
        _applicationDbContext.Todos.Remove(new Todo() { Id = id });
        return _applicationDbContext.SaveChanges() > 0;
    }

    public bool AddTodo(Todo todo)
    {
        _applicationDbContext.Todos.Add(todo);
        return _applicationDbContext.SaveChanges() > 0;
    }

}